<?php

namespace Sharks\Core;

use Sharks\Core\Http\Request;
use Sharks\Core\Http\Response;

/**
 * Module加载钩子类，在各事件执行相应的方法
 * 子关覆盖相应的方法即可
 */
abstract class ModuleLoader {

    /**
     * Module加载时执行
     */
    public function up(AppContext $app) {
        // pass 
    }

    /**
     * Module卸载时执行
     */
    public function down(AppContext $app) {
        // pass
    }

    /**
     * Module在Make加载时执行
     */
    public function load(AppContext $app) {
        // pass
    }

    /**
     * 在AppLifeCycle执行开始时
     */
    public function start(Request $request) {
        // pass
    }

    /**
     * 在AppLifeCycle执行后
     * @param  Response $response [description]
     * @return [type]             [description]
     */
    public function end(Response $response) {
        // pass
    }
}